/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import model.ModelJoc;
import sprites.GimberBoy;
import vista.ZonaDeJoc;

/**
 *
 * @author PA
 * @version 2010
 */
public class ControladorDeJoc implements MouseListener, MouseMotionListener {

    private long usedTime; // Per mirar que tots els torns triguin el mateix
    private ZonaDeJoc vista;

    public ControladorDeJoc(ZonaDeJoc vista) {
        // Creacion del hilo para la animacion
        this.vista = vista;
    }

    public void jugar() {

        boolean isOver = false;

        ModelJoc game = ModelJoc.getInstancia();
        game.iniciarJoc();

        while (!game.isOver()) {
            if (usedTime < 20) {
                retardo();
            }
            long startTime = System.currentTimeMillis();

            game.animar();

            usedTime = System.currentTimeMillis() - startTime;
            game.notifyObservers();
            // Temps que es triga en fer un torn.
            usedTime = System.currentTimeMillis() - startTime;
            if (usedTime > 1) {
                System.out.println("temps = " + usedTime + "  frames/s = "
                        + 1000 / usedTime);
            }
        }
        
//        System.out.println(endMsg + "\nPuntuación final de: " + game.getMarcadorValor() + " puntos.");
        game.deleteObservers();
//        game.animar();
//        ModelJoc.getInstancia().pintar();
       


//        GestorDeDibuix.getInstancia().pintarTexto("¡HAS GANADO", 400, 300, 150, 150);
    }

    public void retardo() {
        try {
            Thread.sleep(20 - usedTime);
        } catch (InterruptedException ie) {
        }
    }

    public void mouseClicked(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }

    public void mousePressed(MouseEvent e) {
        ModelJoc gm = ModelJoc.getInstancia();
        GimberBoy ship = (GimberBoy) gm.getSprite(1);
        ship.shoot();
        // Acció si click a mouse
        // ....
    }

    public void mouseReleased(MouseEvent e) {
    }

    public void mouseDragged(MouseEvent e) {
        ModelJoc gm = ModelJoc.getInstancia();
        int x = e.getX();
        int y = e.getY();
        gm.getSprite(1).setX(x);
        gm.getSprite(1).setY(y);
        // Dona coord del mouse, amb x i y fer el que sigui
        // ....
        gm.notifyObservers();
    }

    public void mouseMoved(MouseEvent e) {
        ModelJoc gm = ModelJoc.getInstancia();
        int x = e.getX();
        int y = e.getY();
        gm.getSprite(1).setX(x);
        gm.getSprite(1).setY(y);
        // Dona coord del mouse, amb x i y fer el que sigui
        // ....
        gm.notifyObservers();
    }
}
